Due to inherent unreliability of computer systems (from unexpected bugs and power failure to permanent hardware damage), redundancy is employed to assure that data outlives its physical container and remains available. One method for data redundancy is called mirroring, which allows a computer system to automatically maintain multiple copies of data to enable continued processes or quick data recovery even in disaster situations.
RAID (redundant array of independent disks) is a technology that combines multiple disk drive components into a single logical drive for the purposes of data redundancy and/or performance improvement. RAID was designed for a device failure within a server, which is not good enough for many modern clustered systems that require full node redundancy, meaning that data should be available even if the entire server (with the RAIDed disk drives) is inaccessible.
RAIN (redundant array of independent nodes) is a newer technology which similarly to RAID builds a virtual pool of storage devices for redundancy purposes but uses devices located on multiple server nodes, such that in case of a node failure, the lost data is replicated among other RAIN nodes in a cluster to avoid the loss of data from the failed node.
The simplest RAIN version is often implemented with DRBD™, which works in Linux. It is integrated at the block layer, on top of block devices, and mirrors each data block that is written to disk to a peer server node with its own disk drives.
The current solutions enable relatively low latency. However, these solutions are integrated in and designed for block-based storage solutions. In order to work with the current mirroring solutions, a byte-addressable storage media would have to be wrapped with a software layer to simulate a block interface, which is inefficient. Moreover, DRBD™ and similar RAIN solutions were designed with HDD (hard disk drive) and SSD (solid state drive) speeds in mind, and both have much higher write latencies than a high speed network. Finally, the current solutions assume symmetry, i.e. that a persistent device on a source node and on its mirror are of the same type. DRBD™ will not work efficiently, for example, if a first node uses fast SSDs and a second node uses cheaper HDDs.
Thus, there are no efficient mirroring solutions for memory aware file systems and/or for hybrid storage systems, in which, for example, persistent memory (PM) technology (in which a nonvolatile media attached to the central processing unit (CPU) of the computer may provide low RAM-like latencies) is combined with lower cost traditional block-based storage devices (e.g. SSD or HDD).